import VXETable from 'vxe-table'
import VXETablePluginElement from 'vxe-table-plugin-element'
import 'vxe-table-plugin-element/dist/style.css'
import Vue from 'vue'
import i18n from '@/i18n'

// // 键盘事件拦截器
// VXETable.interceptor.add('event.keydown', (params, event) => {
//   let $table = params.$table
//   // 该行为只对当前激活的表格有效
//   if ($table && $table.isActivated) {
//     let { rowId, afterFullData, visibleColumn, editStore, keyboardConfig = {}, treeConfig, highlightCurrentRow, currentRow } = $table
//     let { selected, actived } = editStore
//     let keyCode = event.keyCode
//     let isEnter = keyCode === 13
//     let isShiftKey = event.shiftKey

//     // 当前对象
//     let currObj

//     // 回车键改为 tab 键的功能
//     if (isEnter && keyboardConfig.isEnter && (selected.row || actived.row || (treeConfig && highlightCurrentRow && currentRow))) {
//       event.preventDefault()
//       // 读取当前参数
//       if (selected.row || selected.column) {
//         currObj = selected
//       } else if (actived.row || actived.column) {
//         currObj = actived
//       }

//       // 判断最后一列 最后一行
//       let isLastColumn = false
//       let isLastRow = false
//       let _params = Object.assign({}, currObj.args)
//       let _rowIndex = afterFullData.indexOf(_params.row)
//       let _columnIndex = visibleColumn.indexOf(_params.column)
//       if (_columnIndex === visibleColumn.length - 1) {
//         isLastColumn = true
//       } else if (_columnIndex < visibleColumn.length - 1) {
//         // 下一列是否有属性，如果没有属性也定义为最后一列
//         if (!(visibleColumn[_columnIndex + 1].property)) {
//           isLastColumn = true
//         }
//       }
//       // 判断最后一行
//       if (_rowIndex === afterFullData.length - 1) {
//         isLastRow = true
//       }

//       // 执行操作
//       if (isLastColumn) {
//         // 最后一行 新增行 keyboardConfig.enterNewRow 0空白行1复制最后一行
//         if (isLastRow) {
//           let newRow = {}
//           if (keyboardConfig.enterNewRow === 1) {
//             newRow = Object.assign({}, afterFullData[_rowIndex])
//             // console.log('rowId', rowId, newRow, afterFullData)
//             // 重置主键字段
//             if (rowId) {
//               newRow[rowId] = '-1'
//             } else {
//               newRow._XID = null
//             }
//           }
//           // console.log('keydown', newRow, keyboardConfig)
//           $table.insertAt(newRow, -1).then(row => {
//             // 设置插入行的可编辑状态
//             $table.setActiveRow(afterFullData[_rowIndex + 1])
//           })
//         } else {
//           // 开始编辑第一列
//           $table.setActiveRow(afterFullData[_rowIndex + 1])
//         }
//       } else {
//         // tab 移动
//         $table.moveTabSelected(currObj.args, isShiftKey, event)
//       }
//       // 阻止默认行为
//       return false
//     }
//   }
// })

Vue.use(VXETable)
VXETable.use(VXETablePluginElement)
// 拓展表 vxetable 全局变量
VXETable.setup({
  validArgs: 'obsolete',
  table: {
    // 默认表格参数
    size: 'mini',
    showOverflow: true,
    showHeaderOverflow: true,
    align: 'left',
    headerAlign: 'center',
    stripe: false,
    border: true,
    resizable: true,
    fit: true,
    showHeader: true,
    highlightCurrentRow: false,
    highlightHoverRow: true,
    highlightCurrentColumn: false,
    highlightHoverColumn: false,
    rowId: '_XID',
    sortConfig: {
      trigger: 'default'
    },
    validConfig: {
      message: 'default'
    },
    exportConfig: {},
    // 版本号（对于某些带 Storage 数据储存的功能有用到，上升版本号可以用于重置 Storage 数据）
    version: 0
  },
  zIndex: 100, // 全局 zIndex 起始值
  // 配置式表格的默认参数
  grid: {
    proxyConfig: {
      autoLoad: true,
      message: true,
      props: {
        list: null,
        result: 'result',
        total: 'page.total'
      }
    }
  },
  // 默认快捷菜单
  menu: {},
  // 默认 tooltip 主题样式
  tooltip: {
    trigger: 'hover',
    theme: 'dark'
  },
  // 默认分页参数
  pager: {
    pageSize: 10,
    pagerCount: 7,
    pageSizes: [10, 15, 20, 50, 100],
    layouts: ['PrevJump', 'PrevPage', 'Jump', 'PageCount', 'NextPage', 'NextJump', 'Sizes', 'Total'] // 非常灵活的分页布局，支持任意位置随意换
  },
  // 默认工具栏参数
  toolbar: {},
  // 默认模态窗口参数
  modal: {
    minWidth: 340,
    minHeight: 200,
    lockView: true,
    mask: true,
    duration: 3000,
    marginSize: 8,
    dblclickZoom: true,
    animat: true
  },
  // 默认优化配置项
  optimization: {
    animat: true,
    delayHover: 250,
    scrollX: {
      gt: 100
    },
    scrollY: {
      gt: 500
    }
  },
  // 集成国际化（将对列头、校验提示..进行自动翻译）
  translate: key => i18n.t(key)
})
